package org.dynamic.code.layer.n05intel32IA32.register;

import org.dynamic.code.layer.n05intel32IA32.register.control32.RegisterEFLAGS;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterAX;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterBP;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterBX;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterCX;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterDI;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterDX;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterSI;
import org.dynamic.code.layer.n05intel32IA32.register.general16.RegisterSP;
import org.dynamic.code.layer.n05intel32IA32.register.segment16.RegisterCS;
import org.dynamic.code.layer.n05intel32IA32.register.segment16.RegisterSS;
import org.dynamic.code.layer.n05intel32IA32.register.segment16.RegisterDS;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterEDX;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterEBX;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterEDI;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterEAX;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterECX;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterEBP;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterESP;
import org.dynamic.code.layer.n05intel32IA32.register.general32.RegisterESI;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterAH;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterAL;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterBH;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterBL;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterCH;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterCL;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterDH;
import org.dynamic.code.layer.n05intel32IA32.register.general8.RegisterDL;
import org.dynamic.code.layer.n05intel32IA32.register.instruction32.RegisterEIP;
import org.dynamic.code.layer.n05intel32IA32.register.segment16.RegisterES;
import org.dynamic.code.layer.n05intel32IA32.register.segment16.RegisterFS;
import org.dynamic.code.layer.n05intel32IA32.register.segment16.RegisterGS;

/**
 * @author Alban Auzeill
 */
public interface IntelRegister {

    interface General8 {

        RegisterAL AL = new RegisterAL(-1);
        RegisterAH AH = new RegisterAH(-1);
        RegisterBL BL = new RegisterBL(-1);
        RegisterBH BH = new RegisterBH(-1);
        RegisterCL CL = new RegisterCL(-1);
        RegisterCH CH = new RegisterCH(-1);
        RegisterDL DL = new RegisterDL(-1);
        RegisterDH DH = new RegisterDH(-1);
    }

    interface General16 {

        RegisterAX AX = new RegisterAX(-1);
        RegisterBX BX = new RegisterBX(-1);
        RegisterCX CX = new RegisterCX(-1);
        RegisterDX DX = new RegisterDX(-1);
        RegisterDI DI = new RegisterDI(-1);
        RegisterSI SI = new RegisterSI(-1);
        RegisterBP BP = new RegisterBP(-1);
        RegisterSP SP = new RegisterSP(-1);
    }

    interface General32 {

        RegisterEAX EAX = new RegisterEAX(-1);
        RegisterEBX EBX = new RegisterEBX(-1);
        RegisterECX ECX = new RegisterECX(-1);
        RegisterEDX EDX = new RegisterEDX(-1);
        RegisterEDI EDI = new RegisterEDI(-1);
        RegisterESI ESI = new RegisterESI(-1);
        RegisterEBP EBP = new RegisterEBP(-1);
        RegisterESP ESP = new RegisterESP(-1);
    }

    interface Segment16 {

        RegisterCS CS = new RegisterCS(-1);
        RegisterDS DS = new RegisterDS(-1);
        RegisterSS SS = new RegisterSS(-1);
        RegisterES ES = new RegisterES(-1);
        RegisterFS FS = new RegisterFS(-1);
        RegisterGS GS = new RegisterGS(-1);
    }

    interface Control32 {

        RegisterEFLAGS EFLAGS = new RegisterEFLAGS(-1);
    }

    interface Instruction32 {

        RegisterEIP EIP = new RegisterEIP(-1);
    }
}
